导入需要的包
|
|
载入图片
|
|
图片处理
因为后面的cv2.findContours函数要求传入的为二值图像,所以需要先对图片进行处理12gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #转换为灰度图像ret, binary = cv2.threshold(gray,127,255,cv2.THRESH_BINARY) #转换为二值图像
轮廓提取
|
|
contours即为轮廓的像素集合(可能有多个轮廓,需要找到自己要提取的轮廓)
具体参数可查doc.opencv.org
显示图像
cv2.drawContours(img,contours,-1,(0,0,255),2) #图片,轮廓集合,第几个轮廓 ,画笔颜色,画笔宽度
cv2.imshow("img", img)
cv2.waitKey(0)
所有代码及结果
#-*- coding=utf8 -*-
import cv2
import numpy as np
img = cv2.imread('kindle.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #转换为灰度图像
ret, binary = cv2.threshold(gray,127,255,cv2.THRESH_BINARY) #转换为二值图像
_,contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)#提取轮廓
cv2.drawContours(img,contours,-1,(0,0,255),2)
cv2.imshow("img", img)
cv2.waitKey(0)